package com.example.yingpianguangli.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
@Data // 提供所有的getter和setter, equals, canEqual, hashCode 和 toString 方法
@NoArgsConstructor // 提供无参构造函数
@AllArgsConstructor // 提供全参构造函数
/**
 * 实体类SysBill代表一个系统账单，实现了Serializable接口以支持对象的序列化和反序列化
 * 该类主要用于管理订单相关信息，包括订单状态、用户信息、场次信息、座位信息等
 */
public class SysBill implements Serializable {
    // 序列化ID，用于版本控制
    private static final Long serialVersionUID = 1L;

    // 账单ID，唯一标识一个账单
    private Long billId;

    // 订单状态，0表示未支付，1表示已完成
    private Boolean payState;

    // 下订单的用户id
    @NotNull(message = "下订单用户不能为空")
    private Long userId;

    // 订单所属的场次
    @NotNull(message = "订单所属场次不能为空")
    private Long sessionId;

    // 订单的座位，如：1排10号、A排5号
    @NotBlank(message = "订单所选座位不能为空")
    private String seats;

    // 取消状态，表示订单是否已被取消
    private Boolean cancelState;

    // 取消角色，表示谁有权限取消订单
    private Boolean cancelRole;

    // 创建时间，记录订单创建的时间
    private Date createTime;

    // 截止时间，表示订单支付的截止时间
    private Date deadline;

    // 取消时间，记录订单取消的时间
    private Date cancelTime;

    // 用户名作模糊查询条件
    private String queryByUserName;

    // 管理员操作识别，及备注内容。管理员操作点单，或添加或修改，必须要填写备注信息，购票子系统不需要填写，并清空
    private String remark;

    // 删除状态，1：删除，0：未删除
    private Boolean delState;

    // 关联的场次信息对象
    private SysSession sysSession;
}

